package 算法.综合练习;

public class test2 {
    public static void main(String[] args) {
/*
      不死神兔：
         有一对兔子，从出生后的第三个月每个月都生一对兔子，小兔子长到第三个月又生了一对兔子
         假如兔子都不死，问第十二个月的兔子对数为多少？
         思路：在此假设小兔子为 a 大兔子为A
         第一个月：                        a                 1
         第二个月：                        A                 1
         第三个月：                 A             a          2
         第四个月：             A      a          A          3
         第五个月：         A    a     A       A      a      5
         第六个月：      A   a   A   A   a   A   a    A      8
         同时兔子数列(黄金比例分割数，c语言又称FIB数列)又称为斐波那契数列  F(0)=0;  F(1)=1;
         F(N)=F(N-1)+F(N-2) (N>=2);
 */

           // 方法一：
//        创建一个长度为12 的数组,
        int[] arr = new int[12];
        System.out.println(arr.length);
//        手动输入0索引和1索引对应的常数值
        arr[0]=1;//一月份
        arr[1] =1;//二月份
//        按照规律建立循环
        for (int i = 2; i <arr.length; i++) {
            arr[i] = arr[i - 1] + arr[i - 2];
            System.out.print(arr[i]+" ");
        }
        System.out.println();
        System.out.println(arr[arr.length-1]);

        /*
        方法二：递归运算
        递归的核心思路：递归的出口，递归的规律
        F(12)=F(11)+F(10);
        F(11)=F(10)+F(9);
        F(10)=F(9)+F(8);
        ...
        F(2)=1;
        F(1)=1;
         */
        System.out.println(getSum(12));
    }

    public static int getSum(int month){
        if (month==1||month==2){
            return 1;
        }else {
            return getSum(month-1)+getSum(month-2);
        }
    }
}


